package thread;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingDeque;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 25397
 * Date: 2022-04-01
 * Time: 22:02
 */
public class Demo21 {
    public static void main(String[] args) throws InterruptedException {
        BlockingQueue<String> queue=new LinkedBlockingDeque<>();

        //队列实现可以基于数组，也可以基于链表，
        //这里除了LinkedBlockingDeque<>，也可以是ArrayBlockingQueue<>

        //入队列
        queue.put("hello");
        //这里会有一个异常抛一下：put操作可能会触发阻塞，阻塞需要去唤醒，唤醒可能就需要打断

        //出队列
        String s=queue.take();

        //阻塞队列也提供：
        // 入队列offer()
        // 出队列poll()
        //获取队头元素peek()等方法，
        // 但是常见还是用put和take，因为put和take是带阻塞的，上面三个不带阻塞
    }
}
